package util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

/**
 * Класс для чтения конфигов вида Key=Value
 * Допускаются однострочные комментари начинающиеся с #
 */
public class ConfReader {	
	private String configFileName;
	
	/**
	 * Конструктор принимает имя файла конфига.
	 * Чтобы открыть файл src\conf\conf.txt, напишите ConfRead("src\\conf\\conf.txt")
	 * @param configFileName Путь к открываемому файлу
	 */	
	public ConfReader(String configFileName){
		this.configFileName = configFileName;
	}
	/**
	 * public HashMap<String,String> <b>read</b/>()<p>
	 * Метод для чтения конфига. <p>
	 * @return HashMap хеш-массив Key->Value
	 * @throws IOException Если файл не найден 
	 * @throws Exception Если в конфиге есть строка без равно
	 */
	public HashMap<String, String> read() throws Exception{
		HashMap<String, String> hash = new HashMap<String, String>();
		BufferedReader fIn = new BufferedReader(new FileReader(this.configFileName));
		String inputLine = null;
		
		for (int line = 1;(inputLine =fIn.readLine()) != null;line++){
			if (inputLine.equals("") || inputLine.charAt(0)=='#')
				continue;
			String[] KeyValue = inputLine.split("=", 2);
			if (KeyValue[0] == inputLine)
				throw new Exception("Bad string in line "+line);
			hash.put(KeyValue[0], KeyValue[1]);
		}
		
		return hash;
	}
}
